import type { DefaultOptionType } from "ant-design-vue/es/vc-select/Select";
import type { SelectProps } from "ant-design-vue";

/**
 * 下载源查询条件,用与获取下载列表http接口的查询参数
 */
export abstract class MirrorQueryCondition<V = any> {
  /**
   * 数据源已加载
   */
  ready?: boolean;

  /**
   * 下拉框的属性
   */
  selectProps?: SelectProps;

  /**
   * @param name 参数名称
   * @param field 参数查询字段名称
   * @param value 参数值
   * @protected
   */
  protected constructor(
    public readonly name: string,
    public readonly field: string,
    public value?: V | undefined | null,
  ) {}

  /**
   * 获取条件数据源
   */
  abstract getDataSource(): Promise<DefaultOptionType[]>;
}
